#pragma once
#include"primitives.cpp"


class cell
{
public:
    bool is_dff = 0;

    std::vector<std::pair<void(*)(std::vector<char*>&),std::vector<char*>>> sim;

    std::vector<std::tuple<std::size_t,char,char>> wire; //input & internal wire & output , current response  ,  old response -> <hashed port, value, value>

    std::vector<std::tuple<std::size_t,std::size_t,int,cell*>> input_port;  //port , hashed_wire_name , index in wire , cell
    std::vector<std::tuple<std::size_t,std::size_t,int,std::vector<cell*>>> output_port; //port , hashed_wire_name , index in wire , cells

    std::string name="";

    std::vector<std::vector<std::pair<char,char>>> uninitial_para; //vector< index in wire >
    std::vector<std::size_t> async_port;

};
